package cn.smile.business.basic;

import cn.smile.bean.dto.basic.VoucherDTO;
import cn.smile.bean.entity.basic.Voucher;
import cn.smile.bean.form.basic.voucher.AddVoucherForm;
import cn.smile.bean.form.basic.voucher.QueryVoucherForm;
import cn.smile.bean.form.basic.voucher.UpdateVoucherForm;
import cn.smile.commons.domain.IBaseService;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;

public interface IVoucherService extends IBaseService<Voucher> {

    /**
     * 新增代金券
     *
     * @param form 新增参数
     * @return 新增结果
     */
    Boolean addEntity(AddVoucherForm form);

    /**
     * 编辑代金券
     *
     * @param form 编辑参数
     * @return 编辑结果
     */
    Boolean updateEntity(UpdateVoucherForm form);

    /**
     * 分页查询优惠券
     *
     * @param form 查询参数
     * @return 查询结果
     */
    IPage<VoucherDTO> getPage(QueryVoucherForm form);

    /**
     * 列表查询优惠券
     *
     * @param form 查询参数
     * @return 查询结果
     */
    List<VoucherDTO> getList(QueryVoucherForm form);

    /**
     * 查询代金券详情
     *
     * @param id 代金券ID
     * @return 查询结果
     */
    VoucherDTO getVoucherById(String id);

    /**
     * 删除代金券
     *
     * @param id 代金券ID
     * @return 删除结果
     */
    Boolean delVoucher(String id);

    /**
     * 定时任务更新代金券状态
     */
    void updateStatus();
}
